﻿using module .\TaxCalcRunner.psd1
using module .\Lib\UnitTest.psm1
using module .\CalcRunner.psm1
using module .\TaxCalcRunner.psm1

class TaxCalcRunnerTest : TestBase
{
    [SetUp()]
    [void]SetUp()
    {
        $this.target = [TaxCalcRunner]::new();
        $this.target.TargetPath  = 'C:\KeywordAutoTest\02.AutoTest\01.TestTarget\CalcApp.exe';
        $this.target.LogFilePath = 'C:\KeywordAutoTest\02.AutoTest\02.Runner.ps\Test.log';
        Remove-item $this.target.LogFilePath -Force -ErrorAction Ignore
        $this.target.SetUp();
    }

    [TearDown()]
    [void]TearDown()
    {
        $this.target.TearDown();
    }

    [Test()]
	[void]消費税計算テスト()
	{
        #処理の実行
        $testCase = "単価`t100","個数`t2";
        $result = $this.target.テスト実行($testCase);
        $this.AssertEquals('計算結果:金額=[216円]計算結果:金額=[220円]計算結果:金額=[200円]', $result );

        #出力されたログの内容を確認
        $lines = Get-Content $this.target.LogFilePath -Encoding UTF8
        $this.AssertEquals('NumericUpDown[単価]値[100]セット', $lines[0] );
        $this.AssertEquals('NumericUpDown[個数]値[2]セット',   $lines[1] );
        $this.AssertEquals('GroupBox[パーセント8]をチェック',  $lines[2] );
        $this.AssertEquals('計算実行',                         $lines[3] );
        $this.AssertEquals('計算結果:金額=[216円]',            $lines[4] );
        $this.AssertEquals('GroupBox[パーセント10]をチェック', $lines[5] );
        $this.AssertEquals('計算実行',                         $lines[6] );
        $this.AssertEquals('計算結果:金額=[220円]',            $lines[7] );
        $this.AssertEquals('GroupBox[内税]をチェック',         $lines[8] );
        $this.AssertEquals('計算実行',                         $lines[9] );
        $this.AssertEquals('計算結果:金額=[200円]',            $lines[10]);
	}
}

$error.Clear()
[void](([TaxCalcRunnerTest]::new()).RunTest());
#スクリプトのエラー処理は、ここで行う必要がある
if( ( $error -ne $null ) -and ( $error.Count -ne 0 ) )
{
    $errFlag = $false
    foreach($err in $error)
    {
        if( $err.Exception.GetType().Name -ne 'UnitTestException' )
        {
            if( $errFlag -eq $false )
            {
                $errFlag = $true
                Write-host "`n*****Error info*****"
            }
            $err
        }
    }
}